import { StuAdd } from '@/types/address/userAdd'
import { XBusinesslineId } from '..'
/**
 * 公共参数
 */
export type ChangeCourseParam = {
  'X-Businessline-Id': XBusinesslineId
}
/**
 * 查询调课场景参数
 * 查询调出讲次参数
 */
export type ChangeCourseTypeParam = ChangeCourseParam & {
  stuCouId: string | null //学生已有课程id-猜的
}
/**
 * 调换确认参数
 * 查询调入讲次参数
 */
export type TargetPlanParam = ChangeCourseTypeParam & {
  planId: string | null //讲次Id
}
/**
 * 调换讲次确认信息参数
 * 确认调换讲次参数
 */
export type CheckSaveParam = TargetPlanParam & {
  newPlanId: string | null //调入讲次Id
}
/**
 * 调入课程condition的参数
 */
export type ConditionParam = {
  difficulty_id?: string //难度id
  grade_ids?: string //年级id
  learning_stage?: string //进度
  time_slot?: string //时段
  time_phase?: string //
  time_week?: string //时间
  version_id?: string //版本
}
/**
 * 调入课程参数
 */
export type CourseplanParam = ChangeCourseTypeParam & {
  courseId: string //课程id
  adjustType: string //调课场景
  condition: string //筛选条件
  pageNum: string //第几页
  pageSize: string //每页条数
}

/**
 * 获取idencode 参数
 */
export type IdencodeParam = ChangeCourseParam & {
  adjustType: string //调课场景
  stuCouId: string //
  originalCourseId: number //原课程id
  originalClassId: number //原课程班级id
  targetClassId: number //目标班级id
  targetCourseId: number //目标课程id
  diffType: number //差价类型 3-没有差价 1-补差价  2-退回
}

/**
 * 获取确认调课信息参数
 */
export type ConfirmParam = ChangeCourseParam & {
  idEncode: string
}
/**
 * 确认调课参数
 */
export type AdjustAddParam = ConfirmParam & {
  orderType: number //订单类型-猜的
  addId?: string //地址id
}

/**
 * 难度基础信息
 */
export type Difficulty = {
  id: number //难度id
  name: string //难度名称
  alias: number //难度星星个数
}
/**
 * 教师共用基础参数
 */
export type TeacherItem = {
  id: string //老师id
  typeName: string //类型名称
  type: number //类型id
  name: string //老师姓名
  avatar: string //老师头像
}
/**
 * 课程基础参数
 */
export type CourseItemBase = {
  id: number //课程id
  name: string //课程名称
  subjectName: string //学科名称
  schoolTimeName: string //上课时间描述
  difficulty: Difficulty //难度
  answerLiveTimeDesc: string //
}
/**
 * 课程详细信息参数
 */
export type CourseItemSub = CourseItemBase & {
  yearId: string
  category: string //类别
  learningStage: string //进度id
  learningStageName: string //进度名
  brand: string //
  courseStructID: number
  termIds: string
  gradeIds: string //年级id
  gradeNames: string //年级名次
  versionID: string //版本id
  versionName: string //版本名称
  timeSlot: string
  subjectId: string //学科id
  type1Id: string
  saleStatus: number
  saleType: string
  saleTime: string
  saleGroupId: string
  publicDate: string
  status: string //状态
  haltSaleTime: string
  partNum: string
  outlineIds: string
  price: string //价格
  is_nosale: string
  course_info_status: number
  stuCouId: string
  startedPlanNum: string
}
/**
 * 课程列表list中返回
 */
export type CourseItem = {
  course: CourseItemSub //课程详细信息
  class: {
    classId: number //课程id
    classLeftNum: number
  }
  teacher: TeacherItem[] //教师列表
  order: {
    buyed: number
  }
  promotion: {
    price: string //价格
    resale: string //
    promotionInfo: { [key: string]: any }[]
  }
  group: {
    isGroup: number
  }
  exam: {
    type: number //诊断
    examUrl: string //诊断链接
  }
  cart: {
    inCart: number
  }
}
/**
 * 课程列表返回
 */
export type ChangeCourseListData = {
  list: CourseItem[]
}
/**
 * 用户信息返回
 */
export type AccountData = {
  id: string
  uid: string
  name: string //学号跟id一样
  tal_id: string
  phone: string //手机号
  role: string //角色 1
  sex: string //性别 1男 2女 3未设置
  realname: string //真实姓名
  nickname: string //昵称
  en_name: string //英文名称
  email: string //邮箱
  qq: string //qq
  wechat: string //微信
  ref_grade: string //
  year_id: string //
  province_id: string //省份
  city_id: string //城市
  country_id: string //县区
  school: string //学校
  birthday: string //生日
  avatar_path: string //头像地址
  avatar_version: string //0
  auth: string //
  status: string //状态 1审核中
  businessline_id: number
  tal_cg_id: number
  create_time: string //创建时间
  modify_time: string //修改时间
  user_id: string //用户id
  avatar_default: number //默认头像 1学员
  grade_id: number //年级id 7-六年级 6-五年级... 2一年级
  grade_name: string //年级名称
  grade_alias: string //年级别名
  province_name: string //省份名称
  is_realname_mod: number //是否可以修改真实姓名 1不可以
  show_name: string //显示姓名
}
/**
 * 调课场景模块公共参数
 */
export type typeItem = {
  title: string //名称
  status: number //状态
  msg: string //描述
}
/**
 * 调课场景返回
 */
export type ChangeCourseTypeData = {
  plan: typeItem & {
    head: string //标题
  }
  course: {
    head: string //标题
    totalTimes: number //总调换次数
    remainingTimes: number //剩余次数
    adjustTime?: typeItem //调时间
    adjustTeacher?: typeItem //调老师
    adjustDiff?: typeItem //调难度
    adjustVersion?: typeItem //调版本
    adjustGrader?: typeItem //调年级
    adjustLevel?: typeItem //调进度
    [key: symbol]: typeItem
  }
  courseId: string //课程id
}

/**
 * 返回人物的基本参数
 */
export type peopleItem = {
  id: string
  name: string //姓名
  imgUrl: string //头像
  type: string //类型
}
/**
 * 讲次公共参数
 */
export type PlanInfoItem = {
  planId: string //讲次id
  planName: string //讲次名称
  sortFlag: string //
  dateDesc: string //日期描述
  teacherInfo: peopleItem[] //授课老师
  counselorInfo: peopleItem[] //班主任
}
/**
 * 调出讲次list中参数
 */
export type planItem = PlanInfoItem & {
  stuId: string //学员id
  stuCouId: string //
  isExchange: boolean //是否交换
}
/**
 * 调出讲次返回
 */
export type StuPlanListData = {
  list: planItem[] //列表
  planNum: number //总调出讲次
}
/**
 * 调换确认返回
 */
export type IsChangeStuPlanData<T = any> = {
  status: number //状态
  msg: string //描述
  data: T //结果
}
/**
 * 调入讲次list参数
 */
export type TargetPlanItem = PlanInfoItem & {
  isUpsetPlan: number //是否用描述 1是 0否
}
/**
 * 调入讲次返回
 */
export type TargetPlanListData = {
  list: TargetPlanItem[] //调入讲次列表
  planInfo: PlanInfoItem //选中调出讲次信息
  msgInfo: string //提示描述
  isUpsetInfo: {
    text: string //整体描述
    ok: string //确认按钮文字
    cancel: string //取消按钮文字
  }
}
/**
 * 调换讲次确认信息data返回
 */
export type CheckSaveRes = {
  currentPlanInfo: PlanInfoItem //调出讲次
  targetPlanInfo: PlanInfoItem //调入讲次
}
/**
 * 调换讲次确认信息返回
 */
export type CheckSaveData = {
  status: number //状态
  code: number //
  type: number //类型
  msg: string //描述
  data: CheckSaveRes //调换信息
}

/**
 * 确认调换讲次基本信息
 */
export type SaveInfoItem = {
  planid: number //讲次id
  planname: string //讲次名称
  day: string //日期
  starttime: string //开始时间
  endtime: string //结束时间
  teacherid: string //老师id
  teachername: string //老师姓名
}
/**
 * 确认调换返回调换信息
 */
export type SaveChangeRes = {
  planinfo: SaveInfoItem //调出讲次信息
  templaninfo: SaveInfoItem //调入讲次信息
}
/**
 * 确认调换讲次返回
 */
export type SaveChangeData = {
  status: number
  msg: string //调换描述
  data: SaveChangeRes //调换结果
}

/**
 * 差价类型信息
 */
export type DiffPriceInfo = {
  diffPrice: number //差价金额
  diffType: number //差价类型 1补差价 2退回 3没有差价
}
/**
 * 课程courseList参数
 */
export type CourseListItem = CourseItem & {
  diffPriceInfo: DiffPriceInfo //价格信息
  conflict: number //
  courseUrl: string //课程详细地址
  coursePlanConsume: number //已开课讲次数
}
/**
 * 筛选条件基本参数
 */
export type ConditionItem = {
  alias: string //别名
  field: string //对应数组key名称
  id: string //id
  name: string //名称
}
/**
 * 筛选条件
 */
export type ConditionMain = {
  grade_ids?: ConditionItem[] //年级
  difficulty_id?: ConditionItem[] //难度
  version_id?: ConditionItem[] //版本
  time_phase?: ConditionItem[] //
  time_week?: ConditionItem[] //时间
  learning_stage?: ConditionItem[] //进度
  time_slot?: ConditionItem[] //时段
}
/**
 * 调入课程返回
 */
export type CourseplanData = {
  stuCouInfo: CourseItem //原课程信息
  courseList: CourseListItem[] //调入课程列表
  condition: ConditionMain //筛选条件
  pageNum: string //第几页
  pageSize: string //每页条数
  total: number //总共多少条
}

/**
 * 获取idencod参数
 */
export type IdencodeData = {
  idEncode: string
}

/**
 * 课程信息公共部分
 */
export type ProductInfoItem = {
  course: CourseItemBase //课程信息
  teacher: TeacherItem[] //老师信息
}
/**
 * 课程信息
 */
export type ProductInfo = ProductInfoItem & {
  productType: number //
  productId: number //
  resale: string //转卖
  realPrice: number //转卖价格
  price: string //原价格
  coursePlanConsume: number //已开课讲次
  diffPriceInfo: DiffPriceInfo //调换价格信息
  promotionAmt: number //促销单位
  promotionType: string //促销类型
  sourceId: string //来源id
}
/**
 * 确认调课信息返回
 */
export type ConfirmData = {
  stuAdd: StuAdd //地址信息
  productType: number //
  productInfo: ProductInfo[] //调入课程信息列表
  isSend: number //是否有东西发快递 1是
  orderType: number //订单类型
  oldOrderNum: string //订单编号
  source: number //来源
  adjustInfo: {
    originProdInfos: ProductInfoItem & {
      productType: number
      productId: number
      resale: string
    }
    priceInfo: DiffPriceInfo & {
      originPrice: number //原价格
      targetPrice: number //目标价格
    }
    originGiftNames: string[] //原赠课描述
    targetGiftNames: string[] //目标赠课描述
  }
}
/**
 * 确认调课提交返回
 */
export type AdjustAddData = {
  redirtUrl: string //重定向url
}

export type labeLitem = {
  label: string
  value: string
}
export type keysItems = {
  key_icon: string
  key_icon_disabled: string
  dropDown: labeLitem[]
  modalContent: {
    show: boolean
    name: string
    value: string
  }
}
/**
 * 筛选名称对应key
 */
export enum KeysState {
  '时间' = 'time_week',
  '时段' = 'time_slot',
  '难度' = 'difficulty_id',
  '年级' = 'grade_ids',
  '版本' = 'version_id',
  '时隔' = 'time_phase',
  '进度' = 'learning_stage',
}
/**
 * 场景对应icon及选择课程页面对应的筛选条件
 */
export const adjustKeys: { [key: string]: keysItems } = {
  adjustTime: {
    key_icon: 'icon-change_time', //场景对应icon
    key_icon_disabled: 'icon-change_tim_grey', //场景disabled对应icon
    dropDown: [
      //场景对应显示筛选项
      { label: '时间', value: KeysState['时间'] },
      { label: '时段', value: KeysState['时段'] },
    ],
    modalContent: {
      //进入页面默认弹窗内容
      show: false, //弹窗是否显示
      name: '时间', //弹窗显示筛选项名称
      value: KeysState['时间'], //弹窗显示筛选项key
    },
  },
  adjustTeacher: {
    key_icon: 'icon-chang_teacher',
    key_icon_disabled: 'icon-chang_teacher_grey',
    dropDown: [
      { label: '时间', value: KeysState['时间'] },
      { label: '时段', value: KeysState['时段'] },
    ],
    modalContent: {
      show: false,
      name: '时间',
      value: KeysState['时间'],
    },
  },
  adjustDiff: {
    key_icon: 'icon-change_difficult',
    key_icon_disabled: 'icon-change_difficult_grey',
    dropDown: [
      { label: '难度', value: KeysState['难度'] },
      { label: '版本', value: KeysState['版本'] },
      { label: '年级', value: KeysState['年级'] },
      { label: '进度', value: KeysState['进度'] },
      { label: '时间', value: KeysState['时间'] },
      { label: '时段', value: KeysState['时段'] },
    ],
    modalContent: {
      show: true,
      name: '难度',
      value: KeysState['难度'],
    },
  },
  adjustVersion: {
    key_icon: 'icon-change_version',
    key_icon_disabled: 'icon-change_version_grey',
    dropDown: [
      { label: '难度', value: KeysState['难度'] },
      { label: '版本', value: KeysState['版本'] },
      { label: '年级', value: KeysState['年级'] },
      { label: '进度', value: KeysState['进度'] },
      { label: '时间', value: KeysState['时间'] },
      { label: '时段', value: KeysState['时段'] },
    ],
    modalContent: {
      show: true,
      name: '版本',
      value: KeysState['版本'],
    },
  },
  adjustGrader: {
    key_icon: 'icon-cahnge_grade',
    key_icon_disabled: 'icon-cahnge_grade_grey',
    dropDown: [
      { label: '难度', value: KeysState['难度'] },
      { label: '版本', value: KeysState['版本'] },
      { label: '年级', value: KeysState['年级'] },
      { label: '进度', value: KeysState['进度'] },
      { label: '时间', value: KeysState['时间'] },
      { label: '时段', value: KeysState['时段'] },
    ],
    modalContent: {
      show: true,
      name: '年级',
      value: KeysState['年级'],
    },
  },
  adjustLevel: {
    key_icon: 'icon-change_time',
    key_icon_disabled: 'icon-change_tim_grey',
    dropDown: [
      { label: '难度', value: KeysState['难度'] },
      { label: '版本', value: KeysState['版本'] },
      { label: '年级', value: KeysState['年级'] },
      { label: '进度', value: KeysState['进度'] },
      { label: '时间', value: KeysState['时间'] },
      { label: '时段', value: KeysState['时段'] },
    ],
    modalContent: {
      show: true,
      name: '进度',
      value: KeysState['进度'],
    },
  },
}
